"""
当前的模块使用pyjwt组件生成jwt token
需要安装： pip install pyjwt
"""

# ========== 导入组件 =============
import jwt  # pyjwt中包含
import datetime  # 生成token时候有过期时间
from django.conf import settings  # jwt HS256加密所需的key


def create_token(payload, timeout = 14):
    """
    在jwt的认证中，获取jwt token的方法
    :param payload: 提供要返回的数据（dict）
    :param timeout: 提供超时时间，默认是3分钟
    :return:
    """
    # 获取setting中的key
    key = settings.SECRET_KEY

    # 构造header
    header = {
        'tye': 'jwt',
        'alg': 'HS256'
    }

    # 为payload[有效荷载]添加一个超时的时间
    payload['exp'] = datetime.datetime.utcnow() + datetime.timedelta(days=timeout)

    # 生成token
    token = jwt.encode(payload=payload, key=key, algorithm="HS256", headers=header)

    # 返回
    return token